Amazon Linux 2023 の 最新 AMI ID は Parameter Store から取得しよう!
こんにちは! AWS事業本部コンサルティング部のたかくに(@takakuni_)です。
今回は、タイトルの通り Amazon Linux 2023 の AMI ID は Parameter Store から取得しようです。 Terraform では、 data
ブロックを使用して各 OS の最新 AMI ID を取得できます。
以下は Amazon Linux 2 OS で最新の AMI ID を取得する例です。
# Parameter Store のパブリックパラメーターを利用して AMI ID を取得
data "aws_ssm_parameter" "amazonlinux_2" {
name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" # x86_64
# name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-arm64-gp2" # ARM
# name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-minimal-hvm-x86_64-ebs" # Minimal Image (x86_64)
# name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-minimal-hvm-arm64-ebs" # Minimal Image (ARM)
}
# AMI 一覧から直接検索する方法
data "aws_ami" "amazonlinux_2" {
most_recent = true
owners = [ "amazon" ]
filter {
name = "name"
values = [ "amzn2-ami-hvm-*-x86_64-gp2" ] # x86_64
# values = [ "amzn2-ami-hvm-*-arm64-gp2" ] # ARM
# values = [ "amzn2-ami-minimal-hvm-*-x86_64-ebs" ] # Minimal Image (x86_64)
# values = [ "amzn2-ami-minimal-hvm-*-arm64-ebs" ] # Minimal Image (ARM)
}
}
「AWS より提供されているパブリックパラメーターを取得する方法」と、 「AMI 一覧から直接検索をかけて取得する方法」の 2 パターンがあります。
AL2023 を AMI ID 検索方式で調べると
Amazon Linux 2 でご紹介した「AMI 一覧から直接検索をかけて取得する方法」を Amazon Linux 2023 で再現すると以下のようになります。
# AMI 一覧から直接検索する方法
data "aws_ami" "amazonlinux_2023" {
most_recent = true
owners = [ "amazon" ]
filter {
name = "name"
values = [ "al2023-ami-*-kernel-6.1-x86_64" ] # x86_64
# values = [ "al2023-ami-*-kernel-6.1-arm64" ] # ARM
# values = [ "al2023-ami-minimal-*-kernel-6.1-x86_64" ] # Minimal Image (x86_64)
# values = [ "al2023-ami-minimal-*-kernel-6.1-arm64" ] # Minimal Image (ARM)
}
}
本エントリのオチです。
上記の方法の場合、 Amazon ECS 用に最適化された Amazon Linux 2023 の AMI ID が取得されます。
takakuni% terraform console
> data.aws_ami.amazonlinux_2023
{
"architecture" = "x86_64"
"arn" = "arn:aws:ec2:ap-northeast-1::image/ami-07695fdb89e41b9f8"
"block_device_mappings" = toset([
{
"device_name" = "/dev/xvda"
"ebs" = tomap({
"delete_on_termination" = "true"
"encrypted" = "false"
"iops" = "3000"
"snapshot_id" = "snap-0905fd1158e6ca45c"
"throughput" = "125"
"volume_size" = "30"
"volume_type" = "gp3"
})
"no_device" = ""
"virtual_name" = ""
},
])
"boot_mode" = "uefi-preferred"
"creation_date" = "2023-04-06T00:48:18.000Z"
"deprecation_time" = "2025-04-06T00:48:18.000Z"
"description" = "Amazon Linux AMI 2023.0.20230406 x86_64 ECS HVM EBS"
"ena_support" = true
"executable_users" = tolist(null) /* of string */
"filter" = toset([
{
"name" = "name"
"values" = tolist([
"al2023-ami-*-kernel-6.1-x86_64",
])
},
])
"hypervisor" = "xen"
"id" = "ami-07695fdb89e41b9f8"
"image_id" = "ami-07695fdb89e41b9f8"
"image_location" = "amazon/al2023-ami-ecs-hvm-2023.0.20230406-kernel-6.1-x86_64"
"image_owner_alias" = "amazon"
"image_type" = "machine"
"imds_support" = "v2.0"
"include_deprecated" = false
"kernel_id" = ""
"most_recent" = true
"name" = "al2023-ami-ecs-hvm-2023.0.20230406-kernel-6.1-x86_64"
"name_regex" = tostring(null)
"owner_id" = "591542846629"
"owners" = tolist([
"amazon",
])
"platform" = ""
"platform_details" = "Linux/UNIX"
"product_codes" = toset([])
"public" = true
"ramdisk_id" = ""
"root_device_name" = "/dev/xvda"
"root_device_type" = "ebs"
"root_snapshot_id" = "snap-0905fd1158e6ca45c"
"sriov_net_support" = "simple"
"state" = "available"
"state_reason" = tomap({
"code" = "UNSET"
"message" = "UNSET"
})
"tags" = tomap({})
"timeouts" = null /* object */
"tpm_support" = ""
"usage_operation" = "RunInstances"
"virtualization_type" = "hvm"
}
AL2023 の AMI 名の法則
ドキュメントによると以下の法則で AMI 名は命名されます。
The corresponding AL2023 AMIs have the following format:
- al2023-ami-2023.0.20230301.0-kernel-6.1-x86_64
- al2023-ami-2023.1.20230601.0-kernel-6.1-x86_64
- al2023-ami-2023.2.20230901.0-kernel-6.1-x86_64
対して ECS 用に最適化されたインスタンスは以下の AMI 名で命名されています。
- al2023-ami-ecs-hvm-2023.0.20230406-kernel-6.1-x86_64
そのため、「al2023-ami-*」のようなワイルドカードを利用した方法では、 Amazon Linux 2023 の場合、意図しない AMI ID を検索する可能性があります。
まとめ
よって、 Amazon Linux 2023 の最新 AMI ID を取得する場合は、 Parameter Store から取得しましょう。
# Parameter Store のパブリックパラメーターを利用して AMI ID を取得
data "aws_ssm_parameter" "amazonlinux_2023" {
name = "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64" # x86_64
# name = "/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-arm64" # ARM
# name = "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-x86_64" # Minimal Image (x86_64)
# name = "/aws/service/ami-amazon-linux-latest/al2023-ami-minimal-kernel-6.1-arm64" # Minimal Image (ARM)
}
以上、「Amazon Linux 2023 の AMI ID は Parameter Store から取得しよう!」でした。私はしっかり落とし穴にハマったため、お気をつけいただけますと幸いです。
AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!